﻿Public Class frm_buscarProdCambio
    Dim accesoDatosProducto As New AccesoDatos("Producto")
    Dim check As New Validar


    Public Sub buscarPorId(ByVal id As String)
        dgv_producto.DataSource = accesoDatosProducto.consulta("select tp.nombre as 'Tipo Producto', tt.nombre as 'Tela', prod.descripcion as 'Descripcion', prod.precioVenta as 'Precio' from Producto prod INNER JOIN Proveedor prov on(prod.idProveedor=prov.idProveedor) INNER JOIN TipoTela tt on (tt.idTipoTela=prod.idTipoTela) INNER JOIN TipoProd tp on (tp.idTipoProd=prod.idTipoProd) where idProducto = " & id)
    End Sub

    Private Sub cmd_buscar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmd_buscar.Click

        If IsNumeric(txt_codigoProd.Text) Then
            If accesoDatosProducto.validarExistencia("Producto", "idProducto", txt_codigoProd.Text) Then
                Dim consul As String
                dgv_producto.DataSource = Nothing
                msk_cantidadItems.Text = ""
                lbl_mostrarCantidad.Text = ""

                buscarPorId(txt_codigoProd.Text)
                consul = "SELECT Talle.idTalle, Talle.nombre FROM Talle INNER JOIN Talle_Producto ON (Talle.idTalle = Talle_Producto.idTalle) WHERE Talle_Producto.cantidad > 0 and Talle_Producto.idProducto = " & txt_codigoProd.Text
                cargarCombo(cmb_tallesDisponibles, accesoDatosProducto.consulta(consul), "idTalle", "nombre")
                cmb_tallesDisponibles.Focus()
            Else
                MessageBox.Show("El codigo de producto ingresado no existe", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
                txt_codigoProd.Text = ""
                txt_codigoProd.Focus()
            End If
        Else
            MessageBox.Show("Ingrese una clave numérica", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
            txt_codigoProd.Text = ""
            txt_codigoProd.Focus()
        End If

    End Sub

    Private Sub cmb_tallesDisponibles_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmb_tallesDisponibles.SelectedIndexChanged
        If IsNumeric(cmb_tallesDisponibles.SelectedValue) Then
            Dim tabla As New Data.DataTable
            Dim consul As String
            consul = "select cantidad from Talle_Producto where idTalle = " & cmb_tallesDisponibles.SelectedValue & " and idProducto = " & txt_codigoProd.Text
            tabla = accesoDatosProducto.consulta(consul)
            lbl_mostrarCantidad.Text = tabla.Rows(0)("cantidad")
        Else
            lbl_mostrarCantidad.Text = ""
        End If
    End Sub

    Private Sub cargarCombo(ByRef combo As ComboBox, ByRef tablaACargar As Data.DataTable, ByVal indice As String, ByVal campo As String)
        combo.DataSource = Nothing
        combo.DataSource = tablaACargar
        combo.ValueMember = indice
        combo.DisplayMember = campo
    End Sub


    Private Sub cmd_agregarItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmd_agregarItem.Click


        If validarBlancos() = True Then
            Dim importe As Integer
            Dim id As String
            Dim descripcion As String
            Dim precioUni As Integer
            Dim cantidad As Integer
            Dim tabla As New Data.DataTable
            Dim consul As String
            Dim talle As String

            id = txt_codigoProd.Text
            consul = "select tp.nombre as 'TipoProducto', tt.nombre as 'Tela', prod.descripcion as 'Descripcion', prod.precioVenta as 'Precio', Talle.nombre as 'talle' from Producto prod INNER JOIN Proveedor prov on(prod.idProveedor=prov.idProveedor) INNER JOIN TipoTela tt on (tt.idTipoTela=prod.idTipoTela) INNER JOIN TipoProd tp on (tp.idTipoProd=prod.idTipoProd) INNER JOIN Talle_Producto txp ON txp.idProducto = prod.idProducto INNER JOIN Talle on txp.idTalle = Talle.idTalle where prod.idProducto = " & id
            tabla = accesoDatosProducto.consulta(consul)
            precioUni = CInt(tabla.Rows(0)("Precio"))
            descripcion = tabla.Rows(0)("TipoProducto") & " " & tabla.Rows(0)("Tela") & " " & tabla.Rows(0)("Descripcion") & " Talle: " & tabla.Rows(0)("talle")
            cantidad = msk_cantidadItems.Text
            importe = cantidad * precioUni
            talle = cmb_tallesDisponibles.SelectedValue
            dgv_cambio.Rows.Add(cantidad, id, descripcion, precioUni, importe, talle)

            dgv_producto.DataSource = Nothing
            txt_codigoProd.Text = ""
            lbl_mostrarCantidad.Text = ""
            msk_cantidadItems.Text = ""
            cmb_tallesDisponibles.DataSource = Nothing
            txt_codigoProd.Focus()
        End If

    End Sub

    Private Function validarBlancos() As Boolean
        Dim res As Boolean = True
        If check.validarBlanco(txt_codigoProd.Text) = True Then
            MessageBox.Show("Ingrese un producto.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
            txt_codigoProd.Focus()
            res = False
        ElseIf check.validarBlanco(msk_cantidadItems.Text) = True Then
            MessageBox.Show("Ingrese una cantidad.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
            msk_cantidadItems.Focus()
            res = False
        ElseIf check.validarComboBlanco(cmb_tallesDisponibles.SelectedIndex) = True Then
            MessageBox.Show("Ingrese un talle.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
            cmb_tallesDisponibles.Focus()
            res = False
        End If
        Return res
    End Function
    'Private Sub validarExistencia()

    '    For i As Integer = 0 To dgv_venta.RowCount - 1
    '        If txt_codigoProd.Text = dgv_producto.Then Then

    '        End If
    '    Next

    'End Sub

    Private Sub cmd_quitarItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmd_quitarItem.Click
        If dgv_cambio.Rows.Count > 0 Then
            dgv_cambio.Rows.Remove(dgv_cambio.CurrentRow)
        End If

    End Sub

    Private Sub cmd_cancelar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmd_cancelar.Click
        Me.Close()
        frm_cambio.Show()
    End Sub

    Private Sub cmd_Aceptar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmd_Aceptar.Click
        If dgv_cambio.Rows.Count > 0 Then
            frm_cambio.realizarCambio(dgv_cambio)
        Else
            MessageBox.Show("Agregue un producto a la lista.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
        End If
    End Sub
End Class